package com.negocio.entidades;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.validator.Min;

@Entity
@IdClass(value=ProvaAlunoQuestaoPK.class)
public class ProvaAlunoQuestao implements Serializable{
	@Id
	@ManyToOne
	@JoinColumns(value={@JoinColumn(nullable=false, referencedColumnName="aluno_id"),
			@JoinColumn(nullable=false, referencedColumnName="prova_id")})
	private ProvaAluno provaAluno;

	@Id
	@ManyToOne
	@JoinColumn(nullable=false)
	private Questao questao;

	@Column(nullable=false)
	private String respostaAluno = " ";
	
	@Column(nullable=false)
	private boolean correta;
	
	@Min(0)
	@Column(nullable=true)
	private double valorMax;
	
	@Min(0)
	@Column(nullable=true)
	private double valorObtido;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(nullable=false)
	private Date dtAlteracao;
	
	@Min(0)
	@Column(nullable=false)
	private int ordem;
	
	public ProvaAluno getProvaAluno() {
		return provaAluno;
	}

	public void setProvaAluno(ProvaAluno provaAluno) {
		this.provaAluno = provaAluno;
	}

	public Questao getQuestao() {
		return questao;
	}

	public void setQuestao(Questao questao) {
		this.questao = questao;
	}

	public String getRespostaAluno() {
		return respostaAluno;
	}

	public void setRespostaAluno(String respostaAluno) {
		this.respostaAluno = respostaAluno;
	}

	public boolean isCorreta() {
		return correta;
	}

	public void setCorreta(boolean correta) {
		this.correta = correta;
	}

	public double getValorMax() {
		return valorMax;
	}

	public void setValorMax(double valorMax) {
		this.valorMax = valorMax;
	}

	public double getValorObtido() {
		return valorObtido;
	}

	public void setValorObtido(double valorObtido) {
		this.valorObtido = valorObtido;
	}

	public Date getDtAlteracao() {
		return dtAlteracao;
	}

	public void setDtAlteracao(Date dtAlteracao) {
		this.dtAlteracao = dtAlteracao;
	}

	public int getOrdem() {
		return ordem;
	}

	public void setOrdem(int ordem) {
		this.ordem = ordem;
	}
}
